import { getToken } from '@/utils/auth';
/**
 * 前端全局静态变量
 */
const WebConst = {
  /**
   * 老版本, 图片 URL 地址写死的. 需要将这些到处写死的 https://telosbeauty.cn/pic/ 替换为该静态变量, 以便后期重构.
   */
  PROD_IMAGE_URL_PREFIX: { value: 'https://telosbeauty.cn/pic/', desc: '生产环境图片 URL 前缀' },
  /**
   * 顾客图片回显 URI. 格式为 /pub/image/clerk/{filename}.
   * 顾客图片上传接口返回的是 https://telosbeauty.cn/pic/{filename}, 在新版本中, 逐步替换成 /pub/image/clerk/{filename}.
   */
  CLERK_IMAGE_URI_PREFIX: { value: '/pub/image/clerk/', desc: '生产环境顾客图片 URI 前缀' },

  /**
   * 重构UI图片地址.
   * @param {string} clerkImgUploadRet 上传顾客图片返回的数据
   * @return {string} uri
   */
  clerkImageStaticUrl2Uri: function (clerkImgUploadRet) {
    if (!clerkImgUploadRet) {
      return clerkImgUploadRet;
    }
    if (typeof clerkImgUploadRet !== 'string') {
      return undefined;
    }
    if (clerkImgUploadRet.indexOf(WebConst.PROD_IMAGE_URL_PREFIX.value) !== 0) {
      return this.getClerkImageUriByName(clerkImgUploadRet); // 后端已重构, 不再返回静态地址
    }
    const filename = clerkImgUploadRet.substring(WebConst.PROD_IMAGE_URL_PREFIX.value.length);
    if (!filename) {
      return undefined;
    }
    return this.getClerkImageUriByName(filename);
  },

  /**
   * 根据文件名获取图片 URL
   * @param {string} filename 图片在服务器上保存的文件名
   * @return {string} 图片 URL
   * @deprecated
   */
  getClerkImageConstUrlByName: function (filename) {
    return `${WebConst.PROD_IMAGE_URL_PREFIX.value}${filename}`;
  },

  /**
   * 根据文件名获取图片 URI
   * @param {string} filename 图片在服务器上保存的文件名
   * @return {string} 图片 URI, 可用在 img 标签中显示图片
   */
  getClerkImageUriByName: function (filename) {
    return `${WebConst.CLERK_IMAGE_URI_PREFIX.value}${filename}`;
  },

  /**
   * 获取顾客图片上传后, 在服务器上的文件名.
   * @param {string} clerkImgUploadRet 上传顾客图片返回的数据
   * @return {string} filename
   */
  getImageFilename: function (clerkImgUploadRet) {
    if (
      !clerkImgUploadRet ||
      typeof clerkImgUploadRet !== 'string' ||
      clerkImgUploadRet.indexOf(WebConst.PROD_IMAGE_URL_PREFIX.value) !== 0
    ) {
      return undefined;
    }
    const filename = clerkImgUploadRet.substring(WebConst.PROD_IMAGE_URL_PREFIX.value.length);
    return filename;
  },

  /**
   * 获取顾客 pdf 报告的 uri
   *
   * @param {string} filename pdf文件名
   * @return {string} 用于 window.open 函数的 uri
   */
  getClerkPdfUri: function (filename) {
    const token = getToken();
    return `/pub/pdf/clerk?filename=${filename}&token=${token}`;
  },
};

Object.freeze(WebConst);

export default WebConst;
